package com.ican.service.product;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.ican.common.hibernate.Page;
import com.ican.dao.product.OptionDao;
import com.ican.dao.product.OptionValueDao;
import com.ican.domain.product.Option;
import com.ican.domain.product.OptionValue;

@Service("optionAndValueService")
public class OptionAndValueService{

    private OptionDao optionDao;
    private OptionValueDao optionValueDao;
    
    //属性部分
    public void createOption(){
        optionDao.createOption();
    }
    public Page<Option> findAllOption2Syn(Page<Option> page) {
        return optionDao.findAllOption2Syn(page);
    }
    public void deleteOrUpdateOptionName(Integer id, String nameNew, Integer langId) {
        List<Option> list = optionDao.findAllOption(nameNew, langId);
        if(list != null && list.size() > 0){
            optionDao.delete(id);
        }else{
            optionDao.updateOptionName(id, nameNew);
        }
    }
    public List<Option> findAllOption(String name, Integer langId) {
        return optionDao.findAllOption(name, langId);
    }
    public void updateOptionName(Integer id, String nameNew) {
        optionDao.updateOptionName(id, nameNew);
    }
    public void updateOptionCode(Integer id, String nameCode, Integer ocOptionId) {
        optionDao.updateOptionCode(id, nameCode, ocOptionId);
    }
    public Option findOptionByNameAndLang(String optionName, Integer langId){
        return optionDao.findOptionByNameAndLang(optionName, langId);
    }
    public Option findOptionByNameCodeAndLang(String nameCode, Integer langId){
        return optionDao.findOptionByNameCodeAndLang(nameCode, langId);
    }
    public void deleteOption(Integer id) {
        optionDao.delete(id);
    }
    
    //属性项部分
    public void createOptionValue(){
        optionValueDao.createOptionValue();
    }
    public Page<OptionValue> findAllOptionValue2Syn(Page<OptionValue> page) {
        return optionValueDao.findAllOptionValue2Syn(page);
    }
    
    public void deleteOrUpdateOptionValueName(Integer id, String nameCode, String optionValueNew, Integer langId) {
        List<OptionValue> list = optionValueDao.findAllOptionValue(nameCode, optionValueNew, langId);
        if(list != null && list.size() > 0){
            optionValueDao.delete(id);
        }else{
            optionValueDao.updateOptionValueName(id, optionValueNew);
        }
    }
    public List<OptionValue> findAllOptionValue(String nameCode, String optionValue, Integer langId) {
        return optionValueDao.findAllOptionValue(nameCode, optionValue, langId);
    }
    public void updateOptionValueName(Integer id, String optionValueNew){
        optionValueDao.updateOptionValueName(id, optionValueNew);
    }
    
    public void updateOptionValueCode(Integer id, String valueCode, Integer ocOptionValueId) {
        optionValueDao.updateOptionValueCode(id, valueCode, ocOptionValueId);
    }
    public OptionValue findOptionValueByValueAndLang(Integer optionId, String optionValue, Integer langId){
        return optionValueDao.findOptionValueByValueAndLang(optionId, optionValue, langId);
    }
    public OptionValue findOptionValueByValueCodeAndLang(Integer optionId, String valueCode, Integer langId){
        return optionValueDao.findOptionValueByValueCodeAndLang(optionId, valueCode, langId);
    }
    public void deleteOptionValue(Integer id){
        optionValueDao.delete(id);
    }
    
    @Resource
    public void setOptionDao(OptionDao optionDao) {
        this.optionDao = optionDao;
    }
    @Resource
    public void setOptionValueDao(OptionValueDao optionValueDao) {
        this.optionValueDao = optionValueDao;
    }
}
